package 简单;

/*
* 力扣地址：https://leetcode-cn.com/problems/check-array-formation-through-concatenation/
* 能否连接形成数组
*
* 给你一个整数数组 arr ，数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces，其中的整数也 互不相同 。
* 请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是，不允许 对每个数组 pieces[i] 中的整数重新排序。
* 如果可以连接 pieces 中的数组形成 arr ，返回 true ；否则，返回 false 。
* 示例 1：
* 输入：arr = [85], pieces = [[85]]
* 输出：true
* 示例 2：
* 输入：arr = [15,88], pieces = [[88],[15]]
* 输出：true
* 解释：依次连接 [15] 和 [88]
* 思路:拿pieces数组中的第一个元素遍历比较 arr[count]
* 如果 pieces[i][0] == arr[i]
* 继续向下判断 pieces[i][1] == arr[i+1] ...
* 当判断完pieces[i] 以后 拿 pieces[i+1][0] == arr[i+x]继续比较
* */

public class demo1640 {

    public static void main(String[] args) {

//        int[] a ={15,85};
        int[] a ={149,18,16};
//        int[][] b = {{85},{15}};
        int[][] b = {{16,18,49}};

        System.out.println(canFormArray(a,b));

    }

    public static boolean canFormArray(int[] arr, int[][] pieces) {

        int count = 0,i=0,tc=count;
        while (count < arr.length)
        {

            if (pieces[i][0] == arr[count])
            {
                count++;
                for (int j=1;j<pieces[i].length;j++){
                    if (pieces[i][j] != arr[count])
                    {
                        count = count - j;
                        break;
                    }
                    else
                    {
                        count++;
                    }

                }
            }

            i++;

            if (i == pieces.length)
            {
                i = 0;
                if (tc == count)
                    return false;
                else
                    tc = count;
            }
        }

        return true;

    }

}
